package com.xiaoyao.myframeapp.utils.GlideShow;

import android.content.Context;
import android.text.TextUtils;
import android.widget.ImageView;

import com.bumptech.glide.Glide;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.bumptech.glide.load.resource.bitmap.CenterCrop;
import com.xiaoyao.myframeapp.R;
import com.xiaoyao.myframeapp.utils.Glide.GlideCircleTransform;
import com.xiaoyao.myframeapp.utils.Glide.GlideRoundTransform;

import org.xutils.common.util.DensityUtil;

/**
 * Glide 图片显示封装
 */
public class GlideShow {
    private static String http = "http://";
    private static String https = "https://";
    private static String aliyuncs = ".aliyuncs.com";

    /**
     * 设置  圆形
     */
    public static void Circle(Integer s, Context context, ImageView iv) {
        Glide.with(context)
                .load(s)
                .asBitmap()
                .placeholder(R.drawable.image_defaut)
                .error(R.drawable.image_defaut)
                .skipMemoryCache(false)
                .diskCacheStrategy(DiskCacheStrategy.ALL)
                .transform(new CenterCrop(context), new GlideCircleTransform(context))
                .into(iv);
    }

    /**
     * 设置  圆形
     */
    public static void Circle(String s, Context context, ImageView iv) {
        if (TextUtils.isEmpty(s)) {
            return;
        }
        if (s.contains(http) || s.contains(https) || s.contains(aliyuncs)) {
            Glide.with(context)
                    .load(new MyGlideUrl(s))
                    .asBitmap()
                    .placeholder(R.drawable.image_defaut)
                    .error(R.drawable.image_defaut)
                    .skipMemoryCache(false)
                    .diskCacheStrategy(DiskCacheStrategy.ALL)
                    .transform(new CenterCrop(context), new GlideCircleTransform(context))
                    .into(iv);
            return;
        }
        Glide.with(context)
                .load(s)
                .asBitmap()
                .placeholder(R.drawable.image_defaut)
                .error(R.drawable.image_defaut)
                .skipMemoryCache(false)
                .transform(new CenterCrop(context), new GlideCircleTransform(context))
                .into(iv);
    }

    /**
     * 设置  圆角
     */
    public static void Round(Integer s, Context context, ImageView iv) {
        Glide.with(context)
                .load(s)
                .asBitmap()
                .placeholder(R.drawable.image_defaut)
                .error(R.drawable.image_defaut)
                .skipMemoryCache(false)
                .diskCacheStrategy(DiskCacheStrategy.ALL)
                .transform(new CenterCrop(context), new GlideRoundTransform(context))
                .into(iv);
    }

    /**
     * 设置  圆角
     */
    public static void Round(String s, Context context, ImageView iv) {
        if (TextUtils.isEmpty(s)) {
            return;
        }
        if (s.contains(http) || s.contains(https) || s.contains(aliyuncs)) {
            Glide.with(context)
                    .load(new MyGlideUrl(s))
                    .asBitmap()
                    .placeholder(R.drawable.image_defaut)
                    .error(R.drawable.image_defaut)
                    .skipMemoryCache(false)
                    .diskCacheStrategy(DiskCacheStrategy.ALL)
                    .transform(new CenterCrop(context), new GlideRoundTransform(context))
                    .into(iv);
            return;
        }
        Glide.with(context)
                .load(s)
                .asBitmap()
                .placeholder(R.drawable.image_defaut)
                .error(R.drawable.image_defaut)
                .skipMemoryCache(false)
                .transform(new CenterCrop(context), new GlideCircleTransform(context))
                .into(iv);
    }

    /**
     * 设置  正方形
     */
    public static void Multilateral(Integer s, Context context, ImageView iv) {
        Glide.with(context)
                .load(s)
                .asBitmap()
                .placeholder(R.drawable.image_defaut)
                .error(R.drawable.image_defaut)
                .skipMemoryCache(false)
                .diskCacheStrategy(DiskCacheStrategy.ALL)
                .centerCrop()
                .into(iv);
    }

    /**
     * 设置  正方形
     */
    public static void Multilateral(String s, Context context, ImageView iv) {
        if (TextUtils.isEmpty(s)) {
            return;
        }
        if (s.contains(http) || s.contains(https) || s.contains(aliyuncs)) {
            Glide.with(context)
                    .load(new MyGlideUrl(s))
                    .asBitmap()
                    .placeholder(R.drawable.image_defaut)
                    .error(R.drawable.image_defaut)
                    .skipMemoryCache(false)
                    .diskCacheStrategy(DiskCacheStrategy.ALL)
                    .centerCrop()
                    .into(iv);
            return;
        }
        Glide.with(context)
                .load(s)
                .asBitmap()
                .placeholder(R.drawable.image_defaut)
                .error(R.drawable.image_defaut)
                .skipMemoryCache(false)
                .centerCrop()
                .into(iv);
    }


    //其他

    /**
     * 设置图片 正方形 + 90dp*90dp
     */
    public static void MwCustomizationMapImg(String s, Context context, ImageView iv) {
        if (TextUtils.isEmpty(s)) {
            return;
        }
        if (s.contains("file")) {
            Glide.with(context)
                    .load(s)
                    .asBitmap()
                    .placeholder(R.drawable.image_defaut)
                    .error(R.drawable.image_defaut)
                    .skipMemoryCache(false)
                    .centerCrop()
                    .into(iv);
            return;
        }
        Glide.with(context)
                .load(new MyGlideUrl(s))
                .asBitmap()//TODO centerCrop()第一次显示无效
                .placeholder(R.drawable.image_defaut)
                .error(R.drawable.image_defaut)
                .override(DensityUtil.dip2px(45), DensityUtil.dip2px(45))
                .skipMemoryCache(false)//跳过内存缓存
                .diskCacheStrategy(DiskCacheStrategy.ALL)//硬盘缓存
//                .centerCrop()
//                .fitCenter()
//                .crossFade()//加载动画
                .into(iv);


        //TODO Glide中centerCrop()与.transform()共用问题

//                .transform( new CenterCrop(context) ,new GlideCircleTransform(context))
    }

    /**
     * 是不是 数字
     */
    public static boolean isNumeric(String str) {
        for (int i = 0; i < str.length(); i++) {
            if (!Character.isDigit(str.charAt(i))) {
                return false;
            }
        }
        return true;
    }
}
